docs: remove retired legacy RPCs - #65
Conversation
Remove obsolete endpoints from the explorer and operator guidance so the docs match the reduced legacy surface and point users to supported replacements. Co-authored-by: Cursor <cursoragent@cursor.com>
|
Preview deployment for your docs. Learn more about Mintlify Previews.
💡 Tip: Enable Workflows to automatically generate PRs for you. |
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes using default effort and found 1 potential issue.
❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.
Want higher recall? High effort reviews run extra passes and find more bugs. A team admin can switch effort levels in the Cursor dashboard.
Reviewed by Cursor Bugbot for commit 3b93eb7. Configure here.
| # Optional legacy methods - uncomment to enable (same deprecation applies): | ||
| # "sei_associate", | ||
| # "sei_getBlockByHash", | ||
| # "sei_getBlockByHashExcludeTraceFail", |
There was a problem hiding this comment.
Hand-edited auto-generated config
Medium Severity
The enabled_legacy_sei_apis cleanup edits comments and allowlist entries inside the AUTO-GENERATED:APP_TOML block. That block is replaced wholesale by scripts/sync-default-configs.mjs from seid init output, so hand-written changes are clobbered on the next sync and can drift from the real defaults. This violates the rule against hand-editing inside AUTO-GENERATED config blocks.
Triggered by learned rule: Do not hand-edit inside AUTO-GENERATED config blocks
Reviewed by Cursor Bugbot for commit 3b93eb7. Configure here.
There was a problem hiding this comment.
Docs-only cleanup that removes the retired sei2_* namespace and obsolete sei_* methods; the removal is complete and internally consistent (no dangling references, explorer data matches the reference table, eth_getVMError correctly covers the dropped sei_getVMError). No blockers, but the rewrite drops version markers and per-method migration paths, hand-edits two verbatim server strings that need confirming against sei-chain #3927, and leaves some local inconsistencies in the seid CLI page.
Findings: 0 blocking | 16 non-blocking | 10 posted inline
Blockers
- None at the file/PR level.
Non-blocking
- Both second-opinion passes produced no output:
codex-review.mdandcursor-review.mdare empty files.REVIEW_GUIDELINES.mdis also empty, so no repo-specific standards could be applied to this review. - Merge ordering: every removal is stated in the present tense while sei-chain #3927 is still open. Publishing before that ships makes the
app.tomlsample innode/node-operators.mdxwrong for every node currently running, and tells integrators that methods they are actively calling are gone. The PR body already flags the dependency — keep the merge gated on it. - Consider replacing the deleted method inventory with a short old → new migration table instead of removing it outright. The deleted accordion in
evm/reference.mdxwas the only place many of these names appeared in the docs, so integrators searching forsei_getEvmTx,sei_getLogs,sei_getBlockByNumber, orsei_getTransactionErrorByHashnow get no hit and no guidance. evm/tracing/index.mdx: renaming the H2 changes its anchor from#excludetracefail-filtering-semanticsto#removed-legacy-trace-filters. Nothing in the repo links to the old anchor, but external and deep links will break. The section is also now a single<Note>under its own H2 — folding it into an adjacent section would read better than leaving a heading whose only content is a tombstone.- The synthetic-log guidance sentence ("There is no block or filter method for discovering synthetic logs…") is duplicated near-verbatim in
evm/reference.mdx:1354andevm/tracing/index.mdx:448. A shared snippet would keep the two from drifting. seid tx evm native-associatecould not be verified from this environment (no network access to sei-chain sources). Please confirm the exact command name, the positional-arg arity, and whether the custom message is required before merging — it is the sole documented replacement for a command this PR deletes.- 10 suggestion(s)/nit(s) flagged inline on specific lines.
|
|
||
| <Warning> | ||
| **Deprecation Notice:** All `sei_*` and `sei2_*` JSON-RPC methods are deprecated and scheduled for removal. Do not build new integrations on these endpoints. Use standard `eth_*` and `debug_*` methods instead. | ||
| The `sei2_*` namespace has been removed. Most legacy `sei_*` methods have also been removed, including block, filter, log, signing, association, and transaction lookup methods. The `sei_*` cleanup is tracked in [sei-chain PR #3927](https://github.com/sei-protocol/sei-chain/pull/3927). |
There was a problem hiding this comment.
[suggestion] This states the removal in the present tense with no release boundary. The docs previously used version markers for exactly this case ("removed in v6.6.0 (#3618)"), which this rewrite drops everywhere. Operators and integrators on current binaries still have sei2_* and the other methods, so as written this page is wrong for them. Suggest "removed in vX.Y.Z" once the sei-chain release is known, and link the release notes rather than an open PR — a PR link will read as "not shipped yet" to anyone who follows it, and as dead context after it merges.
| "error": { | ||
| "code": -32601, | ||
| "message": "sei_getBlockByNumber is not enabled on this node. The sei_* and sei2_* JSON-RPC surfaces are deprecated, scheduled for removal, and should not be used for new integrations - prefer standard eth_* (and debug_*) methods and official migration guidance. To allow this legacy method, add it to enabled_legacy_sei_apis under [evm] in app.toml.", | ||
| "message": "sei_getTransactionReceipt is not enabled on this node. The sei_* JSON-RPC surface is deprecated, scheduled for removal, and should not be used for new integrations - prefer standard eth_* (and debug_*) methods and official migration guidance. To allow this legacy method, add it to enabled_legacy_sei_apis under [evm] in app.toml.", |
There was a problem hiding this comment.
[suggestion] This sample is presented as the node's verbatim error output, and the change rewrites it by hand (The sei_* and sei2_* JSON-RPC surfaces are deprecated → The sei_* JSON-RPC surface is deprecated, plus swapping the method name). Same applies to the header value on line 1490 and the app.toml comment block in node/node-operators.mdx:435-445. If sei-chain #3927 does not make the identical wording change, all three drift from what the node actually emits — worth diffing them against the chain PR before merge, since readers may be string-matching on them.
| </Warning> | ||
|
|
||
| **Batch requests:** JSON-RPC batches (a top-level JSON array) are handled by the gate rather than passed through wholesale. Only the allowed methods in the batch are forwarded to the inner handler as a filtered subset, and the inner responses are then merged back by matching each response's JSON-RPC `id`. Disallowed methods yield the usual `-32601` legacy deprecation error in their slot, and any batch element that is not a JSON object returns a JSON-RPC `-32600` `"Invalid Request"` error in its slot — a malformed element no longer causes the whole batch body to bypass the gate and reach the inner handler. | ||
| <Note>There is no remaining block or filter method for discovering synthetic logs from Cosmos-originated transactions. If you already know a synthetic transaction hash, enable `sei_getTransactionReceipt` to retrieve its receipt and logs.</Note> |
There was a problem hiding this comment.
[suggestion] This tells the reader to use sei_getTransactionReceipt "if you already know a synthetic transaction hash" but never says how to obtain one now that sei_getLogs, sei_getBlockByNumber, and the sei_* filter methods are gone. That leaves the advice unusable in practice. Please point at the actual discovery path (CometBFT tx search / block events / an indexer) or say plainly that synthetic-log discovery over JSON-RPC is no longer supported — either is more useful than an unreachable precondition.
| ### Cross-VM transaction lookup | ||
|
|
||
| `sei_getCosmosTx` resolves the underlying Cosmos transaction hash for a given EVM transaction. It does not yet have a precompile equivalent and is enabled by default on Sei nodes. | ||
| `sei_getCosmosTx` resolves the underlying Cosmos transaction hash for a given EVM transaction. It returns the hash as uppercase hexadecimal without a `0x` prefix. The method does not yet have a precompile equivalent and is enabled by default on Sei nodes. |
There was a problem hiding this comment.
[suggestion] This section now documents only the EVM → Cosmos direction. The inverse, sei_getEvmTx (Cosmos → EVM hash), is removed by this PR with no replacement mentioned anywhere in the docs, even though the section title still promises "cross-VM transaction lookup" generally. Add a sentence on what integrators should do for the reverse mapping, or note explicitly that it has no replacement.
| <Note>`sei_traceBlockByHashExcludeTraceFail` and `sei_traceBlockByNumberExcludeTraceFail` were removed in v6.6.0 (#3618) and no longer appear in the gated method list; adding them to `enabled_legacy_sei_apis` has no effect. Use `debug_traceBlockByHash`/`debug_traceBlockByNumber` instead.</Note> | ||
|
|
||
| **`sei2_*` methods** (block queries with bank transfers included): | ||
| Only these four methods are available: |
There was a problem hiding this comment.
[nit] The authoritative method list now sits under ### Legacy API configuration, after the TOML block, which makes it hard to find from the section heading. Consider moving it up under ## Sei custom endpoints next to the "four legacy custom endpoints" sentence it supports. Separately, sei_getCosmosTx gets a full parameters/result/example subsection while sei_getTransactionReceipt — the one method that is off by default and therefore needs the most explanation — only appears as a table row.
| | `object` | The Cosmos transaction object. | | ||
| | Type | Description | | ||
| | :--- | :---------- | | ||
| | `string` | The Cosmos transaction hash as uppercase hexadecimal without a `0x` prefix. | |
There was a problem hiding this comment.
[nit] Since the documented result type changes here from object to a bare string, an Example Response block alongside the existing request example would make the new contract unambiguous — the uppercase-no-0x format is easy to get wrong when migrating.
|
|
||
| ```bash | ||
| seid tx evm associate-address [optional priv key hex] --from=<sender> --evm-rpc=<url> | ||
| seid tx evm native-associate [custom-message] --from=<sender> |
There was a problem hiding this comment.
[suggestion] The Parameters: block was dropped here, but every other command in this file keeps one (see Send Native Tokens below). The bracket notation implies [custom-message] is optional, yet the example always passes "associate" and the prose does not say what happens if it is omitted or what the value is used for. Please restore a short parameters list stating whether it is optional and what a caller should put there.
| **Parameters:** | ||
|
|
||
| - `[optional priv key hex]` - Optional private key in hex format. If not provided, uses the key from keyring. | ||
| The custom message identifies the association request. This command submits a native transaction, so use standard `seid` transaction flags such as `--node` and `--chain-id` instead of `--evm-rpc`. |
There was a problem hiding this comment.
[suggestion] This contradicts the Common Transaction Flags section above (line 30: "All transaction commands support these common flags", including --evm-rpc) and the <Info> at line 26. Worth qualifying that list — e.g. "all EVM-RPC transaction commands" — so the two statements do not conflict on the same page.
| - `--nonce=<nonce>` - Nonce override for the transaction (-1 means auto-calculate) | ||
|
|
||
| ## Address Management Commands | ||
| ## Address management commands |
There was a problem hiding this comment.
[nit] These two headings are switched to sentence case while every other heading in the file stays Title Case (## Overview, ## Network Configuration, ## Common Transaction Flags, ## Token Transfer Commands at line 61, ### Send Native Tokens). Either leave them as-is or convert the whole file in a follow-up — a two-heading conversion just makes the page look inconsistent.
| <Info>Each method ensures the **public key** is known to the chain, enabling automatic association between the EVM-compatible and Bech32 addresses. All four go through the on-chain `addr` precompile (`0x0000000000000000000000000000000000001004`) or the EVM ante handler and are available on every Sei EVM RPC.</Info> | ||
|
|
||
| <Note>A previous "gasless" association flow that used the `sei_associate` JSON-RPC method has been retired — the method is part of the deprecated `sei_*` namespace and is not in the default `enabled_legacy_sei_apis` allowlist, so it returns `legacy_sei_deprecated` on public RPCs. Method 3 covers the same wallet-signed-message UX without depending on a gated endpoint. Node operators who want to re-enable the legacy method on their own infrastructure can add `sei_associate` to `enabled_legacy_sei_apis` in `app.toml` — see [Node Operators](/node/node-operators) for the surrounding config.</Note> | ||
| <Note>The legacy `sei_associate` JSON-RPC method has been removed. Method 3 provides the same wallet-signed-message flow through the `addr` precompile.</Note> |
There was a problem hiding this comment.
[suggestion] The replacement note drops the "gasless" characterization the old text carried. That was the operative property for this flow: sei_associate broadcast a no-gas AssociateTx, whereas the addr precompile path is a regular EVM transaction requiring a funded account — which is precisely the situation an unassociated user is often in. "Method 3 provides the same wallet-signed-message flow" is true for the signing UX but glosses over that funding requirement. Worth one clause spelling out the difference.


Summary
sei2_*namespace and obsoletesei_*methods from the RPC explorer, reference, and operator configurationsei_*methodssei_getCosmosTxresponse formatTest plan
npm_config_ignore_scripts=true npm exec --yes --package=mintlify@4.2.805 -- mintlify broken-linksgit diff --checkDependency
Made with Cursor